# -*- coding: utf-8 -*-
# @File  : sqlaichemy连接数据库.py
# @Author: zbh
# @Date  : 2025/6/6_9:47


from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# 创建数据库引擎，使用 oracle+cx_oracle 驱动（需提前安装 cx_Oracle 库）
# 格式：oracle+cx_oracle://用户名:密码@主机:端口/服务名
engine = create_engine(
    'oracle+cx_oracle://ACPBOOT:ACPBOOT@192.168.99.105:15210/ORCL',
    echo=True  # 开启 SQL 日志，方便调试
)

# 创建基础模型类
Base = declarative_base() # 创建一个基础模型类，用于定义数据模型


# 定义数据模型（对应数据库表），User类对应数据库中的users表
class User(Base):
    __tablename__ = 'USERS'  # 表名

    id = Column(Integer, primary_key=True)  # 主键字段,Column是SQLAlchemy中的列定义,定义字段类型和约束
    name = Column(String(50))  # 字符串字段，最大长度为 50
    age = Column(Integer)  # 整数字段

    def __repr__(self):
        return f"<User(name='{self.name}', age={self.age})>"


# 创建表（如果不存在）
Base.metadata.create_all(engine)

# 创建会话
Session = sessionmaker(bind=engine)
session = Session()

# 添加数据
new_user = User(name='Alice', age=30)
session.add(new_user)
session.commit()  # 提交事务

# 查询数据
user = session.query(User).filter_by(name='Alice').first()
print(f"查询结果: {user}")

# 更新数据
user.age = 31
session.commit()

# 删除数据
session.delete(user)
session.commit()

# 关闭会话
session.close()
















